package com.pet.service;

import com.pet.dto.web.InvitationInformationDTO;
import com.pet.dto.web.InvitationRemarkDTO;
import com.pet.pageDto.InvitationPageDTO;
import com.pet.result.PageResult;
import com.pet.vo.web.InvitationCollectVO;
import com.pet.vo.web.InvitationHotVO;
import com.pet.vo.web.InvitationInformationVO;
import com.pet.vo.web.InvitationRemarkVO;

import java.util.List;

public interface InvitationService {

    /**
     * 创建帖子
     * @param dto
     */
    void insertInvitationInformation(InvitationInformationDTO dto);

    /**
     * 查询帖子
     * @param dto
     * @return
     */
    PageResult pageQuery(InvitationPageDTO dto);

    /**
     * 修改帖子
     * @param dto
     */
    void updateInvitation(InvitationInformationDTO dto);

    /**
     * 删除帖子
     * @param ids
     */
    void deleteInvitation(List<Integer> ids);

    /**
     * 为帖子点赞
     * @param id
     */
    void invitationLike(Integer id);

    /**
     * 查询帖子详情
     * @param id
     * @return
     */
    InvitationInformationVO selectInvitationInfoById(Integer id);

    /**
     * 取消帖子的点赞
     * @param id
     */
    void deleteInvitationLike(Integer id);

    /**
     * 收藏帖子
     * @param id
     */
    void invitationCollect(Integer id);

    /**
     * 取消收藏帖子
     * @param invitationId
     */
    void deleteInvitationCollect(Integer invitationId);

    /**
     * 查询个人收藏
     * @return
     */
    List<InvitationCollectVO> selectInvitationCollectById();

    /**
     * 评论帖子
     * @param invitationRemarkDTO
     */
    void InsertInvitationRemark(InvitationRemarkDTO invitationRemarkDTO);

    /**
     * 查询是否点赞
     * @param id
     * @return
     */
    Boolean invitationRemarkUserLikeStatus(Integer id);

    /**
     * 查询是否收藏
     * @param id
     * @return
     */
    Boolean invitationRemarkUserCollectStatus(Integer id);

    /**
     * 查询帖子评论
     * @param invitationId
     * @return
     */
    List<InvitationRemarkVO> selectInvitationRemark(Integer invitationId);

    /**
     * 查询个人喜欢
     * @return
     */
    List<InvitationCollectVO> selectInvitationLikeById();

    /**
     * 查询热门帖子
     * @return
     */
    List<InvitationHotVO> selectInvitationHot();

    /**
     * 查询发表的评论
     */
    List<InvitationRemarkVO> selectInvitationRemarksSelf();

    /**
     * 修改发表的评论
     * @param id
     */
    void updateInvitationRemarksSelf(InvitationRemarkDTO id);

    /**
     * 删除发表的评论
     * @param id
     */
    void deleteInvitationRemarksSelf(Integer id);
}
